作者:rert | 来源:互联网 | 2023-09-14 21:57
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android5.X新特性详解——Toolbar相关的知识,希望对你有一定的参考价值。Toolbar与ActionB
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android 5.X 新特性详解——Toolbar相关的知识,希望对你有一定的参考价值。
Toolbar与ActionBar最大的区别就是Toolbar更加自由、可控。这也是Google在逐渐使用Toolbar替换ActionBar的原因,要使用Toolbar必须引入appcompat-v7支持,并设置主题为NoActionBar,因此在styles.xml文件中,使用如下所示代码进行设置。
<resources>
<style name&#61;"AppTheme" parent&#61;"Theme.AppCompat.Light.NoActionBar">
-- toolbar颜色 -->
<item name&#61;"android:colorPrimary">#4876FFitem>
-- 状态栏颜色 -->
<item name&#61;"android:colorPrimaryDark">#3A5FCDitem>
-- 窗口的背景颜色 -->
<item name&#61;"android:windowBackground">&#64;android:color/white
- "android:searchViewStyle"
>&#64;style/MySearchView
style>
<style name&#61;"MySearchView" parent&#61;"Widget.AppCompat.SearchView" />
resources>
菜单配置与ActionBar基本类似&#xff0c;代码如下所示&#xff1a;
使用Toolbar的核心代码如下所示&#xff1a;
public class MainActivity extends AppCompatActivity
private Toolbar mToolbar;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ShareActionProvider mShareActionProvider;
&#64;Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar &#61; (Toolbar) findViewById(R.id.toolbar);
mToolbar.setLogo(R.mipmap.ic_launcher);
mToolbar.setTitle("主标题");
mToolbar.setSubtitle("副标题");
setSupportActionBar(mToolbar);
/**
* 将Toolbar与DrawerLayout结合起来&#xff0c;实现android 5.X 中DrawerToggle状态变化的动态效果&#xff0c;即最左边的
* Toggle在DrawerLayout滑动时&#xff0c;会从三条横线间变成一个箭头状的图案。
*/
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerLayout &#61; (DrawerLayout) findViewById(R.id.drawer);
mDrawerToggle &#61; new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar,
R.string.abc_action_bar_home_description,
R.string.abc_action_bar_home_description_format);
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);
mToolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener()
&#64;Override
public boolean onMenuItemClick(MenuItem item)
switch (item.getItemId())
case R.id.action_settings:
Toast.makeText(MainActivity.this, "action_settings", Toast.LENGTH_SHORT).show();
break;
default:
break;
return true;
);
&#64;Override
public boolean onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.menu_main, menu);
mShareActionProvider &#61; (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.action_share));
Intent intent &#61; new Intent(Intent.ACTION_SEND);
intent.setType("text/*");
mShareActionProvider.setShareIntent(intent);
return super.onCreateOptionsMenu(menu);
布局文件如下所示&#xff1a;
<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:tools&#61;"http://schemas.android.com/tools"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:orientation&#61;"vertical"
tools:context&#61;".MainActivity">
<include layout&#61;"&#64;layout/toolbar" />
<android.support.v4.widget.DrawerLayout
android:id&#61;"&#64;&#43;id/drawer"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent">
<LinearLayout
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:background&#61;"&#64;android:color/holo_blue_light"
android:orientation&#61;"vertical" >
<Button
android:layout_width&#61;"100dp"
android:layout_height&#61;"match_parent"
android:text&#61;"内容界面"/>
LinearLayout>
<LinearLayout
android:id&#61;"&#64;&#43;id/drawer_view"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent"
android:layout_gravity&#61;"start"
android:orientation&#61;"vertical" >
<Button
android:layout_width&#61;"200dp"
android:layout_height&#61;"match_parent"
android:text&#61;"菜单界面"/>
LinearLayout>
android.support.v4.widget.DrawerLayout>
LinearLayout>
.support.v7.widget.Toolbar xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
android:id&#61;"&#64;&#43;id/toolbar"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"wrap_content"
android:background&#61;"?attr/colorPrimary"
android:minHeight&#61;"?attr/actionBarSize"
app:popupTheme&#61;"&#64;style/ThemeOverlay.AppCompat.Light"
app:theme&#61;"&#64;style/ThemeOverlay.AppCompat.ActionBar" />
程序运行效果如下所示&#xff1a;
代码地址